package com.luo.chengrui.module.sa.service.datapermission;

import java.util.*;
import javax.validation.*;
import com.luo.chengrui.module.sa.controller.admin.datapermission.vo.*;
import com.luo.chengrui.module.sa.dal.dataobject.datapermission.DataPermissionItemSubDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。 Service 接口
 *
 * @author 诚睿
 */
public interface DataPermissionItemSubService {

    /**
     * 创建数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createDataPermissionItemSub(@Valid DataPermissionItemSubCreateReqVO createReqVO);

    /**
     * 更新数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。
     *
     * @param updateReqVO 更新信息
     */
    void updateDataPermissionItemSub(@Valid DataPermissionItemSubUpdateReqVO updateReqVO);

    /**
     * 删除数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。
     *
     * @param id 编号
     */
    void deleteDataPermissionItemSub(String id);

    /**
     * 获得数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。
     *
     * @param id 编号
     * @return 数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。
     */
    DataPermissionItemSubDO getDataPermissionItemSub(String id);

    /**
     * 获得数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。列表
     *
     * @param ids 编号
     * @return 数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。列表
     */
    List<DataPermissionItemSubDO> getDataPermissionItemSubList(Collection<String> ids);

    /**
     * 获得数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。分页
     *
     * @param pageReqVO 分页查询
     * @return 数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。分页
     */
    PageResult<DataPermissionItemSubDO> getDataPermissionItemSubPage(DataPermissionItemSubPageReqVO pageReqVO);

    /**
     * 获得数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 数据权限项明细，代码中用来配置SaDataPermission注解中变量permissionCode的取值。列表
     */
    List<DataPermissionItemSubDO> getDataPermissionItemSubList(DataPermissionItemSubExportReqVO exportReqVO);

}
